#include <iostream>
#include <stdarg.h>
/*
实现了my_printf函数，可以打印int类型和字符串类型参数。
*/
void my_printf(const char *format,...);

int main()
{
    my_printf("Hello, %s!\n", "World");
    my_printf("1 + 2 = %d\n", 1 + 2);
    my_printf("%s\n", "Hello, World!");
    my_printf("%s, %s\n", "Hello", "World!");
    my_printf("%s\t%d\n", "Hello", 123);
    return 0;
}

void my_printf(const char *format,...)
{
    va_list arg_list;
    va_start(arg_list, format);
    while (*format!= '\0') {
        if (*format == '%') {
            switch (*(++format)) {
                case 'd':
                    std::cout << va_arg(arg_list, int);
                    break;
                case 's':
                    std::cout << va_arg(arg_list, char*);
                    break;
                default:
                    std::cout << *format;
                    break;
            }
        } else {
            std::cout << *format;
        }
        format++;
    }
    va_end(arg_list);
}